import { Href, Link } from 'expo-router';
import { openBrowserAsync } from 'expo-web-browser';
import React from 'react';
import { type ComponentProps } from 'react';
import { Platform } from 'react-native';

type Props = Omit<ComponentProps<typeof Link>, 'href'> & { href: string };


/* 
- 用于处理在 React Native 和 Web 环境中的链接点击行为。
- 基于 Link 组件 添加了对（非 Web）环境的处理，通过 Expo 的 openBrowserAsync 方法在应用内打开浏览器
- 从而保持用户在应用内的流畅体验。

*/

export function ExternalLink({ href, ...rest }: Props) {
    return (
        <Link
            target="_blank"
            {...rest}
            href={href as Href<string> }
            onPress={async (event) => {
                if (Platform.OS !== 'web') {
                    // 在web环境外 阻止使用默认浏览器
                    event.preventDefault();
                    // 使用组件浏览器
                    await openBrowserAsync(href);
                }
            }}
        />
    );
}
